세트(Set)
세트는 유일한 원소만 담는 정렬되지 않은 자료형이다. 딕셔너리와 유사하지만 값(value)은 없고 키(key)만 가지고 있다. 세트는 set( )
함수를 이용하거나 중괄호 {}
를 이용해서 생성할 수 있다.
선언 및 값 할당
s1 = set([2, 2, 2, 1, 3, 3]) |
원소 추가 및 삭제하기
세트에 원소를 추가하는 메소드는 add()
이며, 삭제하기 위한 메소드는 remove()
이다.a_set = {1, 2, 3, 4, 5}
a_set.add(6)
print(a_set) # {1, 2, 3, 4, 5, 6}
a_set.remove(3)
print(a_set) # {1, 2, 4, 5, 6}
집합연산
세트는 합집합, 교집합, 대칭차집합 같은 산술 집합 연산을 제공한다.
a = {1, 2, 3, 4, 5} |
한 세트가 다른 세트의 부분 집합인지, 확대 집합인지도 검사할 수 있다.a_set = {1, 2, 3, 4, 5}
print({1, 2, 3}.issubset(a_set)) # True
print(a_set.issuperset({1, 2, 3})) # True
== 연산자를 사용해서 두 세트의 내용이 같은지도 검사할 수 있다.print({1, 2, 3} == {3, 2, 1})
세트 컴프리헨션
세트 컴프리헨션은 리스트 컴프리헨션의 구문에서 대괄호 대신 중괄호를 사용하면 된다.
strings = ['a', 'as', 'bat', 'car', 'dove', 'python'] |
내장자료형
파이썬은 순차 자료형에 사용할 수 있는 매우 유용한 함수를 제공한다.
enumerate
enumerate()
함수는 순차 자료형에서 현재 아이템의 색인을 함께 처리하고자 할 때 사용된다. enumerate를 사용하는 유용한 패턴은 순차 자료형에서의 값과 그 위치를 dict에 넘겨주는 것이다.
some_list = ['foo', 'bar', 'baz'] |
sorted
sorted()
함수는 정렬된 새로운 순차 자료형을 반환한다.
print(sorted([7, 1, 2, 6, 0, 3, 2])) # [0, 1, 2, 2, 3, 6, 7] |
zip
zip()
함수는 여러 개의 리스트나 튜플 또는 다른 순차 자료형을 서로 짝지어서 튜플의 리스트를 생성한다.
seq1 = ['foo', 'bar', 'baz'] |
zip() 함수는 여러 개의 순차 자료형을 동시에 순회하는 경우 enumerate() 함수와 함께 사용되기도 한다.for i, (a, b) in enumerate(zip(seq1, seq2)):
print("%d: %s, %s" % (i, a, b))
print("{:d}: {}, {}".format(i, a, b))
print(f'{i:d}: {a}, {b}')
# 0: foo, one
# 1: bar, two
# 2: baz, three
zip() 함수를 사용해서 짝지어진 순차 자료형을 다시 풀어낼 수도 있다. 이를 이용하면 리스트의 행을 리스트의 컬럼으로 변환할 수 있다.
pitchers = [('Nolan', 'Ryan'), ('Roger', 'Clemens'), |
reversed
reversed()
함수는 순차 자료형을 역순으로 순회한다.
print(list(reversed(range(10)))) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] |